﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Caching;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace AJAX_learning.Chapter11
{
	public partial class p5 : System.Web.UI.Page
	{
		protected override void OnLoad(EventArgs e)
		{
			base.OnLoad(e);

			if (!this.IsPostBack)
			{
				lblInfo.Text += "Creating items...<br />";
				string itemA = "item A";
				string itemB = "item B";
				Cache.Insert("itemA", itemA, null, DateTime.Now.AddMinutes(60),
				TimeSpan.Zero, CacheItemPriority.Default,
				new CacheItemRemovedCallback(ItemRemovedCallback));
				Cache.Insert("itemB", itemB, null, DateTime.Now.AddMinutes(60),
				TimeSpan.Zero, CacheItemPriority.Default,
				new CacheItemRemovedCallback(ItemRemovedCallback));
			}
		}
		protected void cmdCheck_Click(object sender, System.EventArgs e)
		{
			string itemList = Cache.Cast<DictionaryEntry>().Aggregate("", (current, item) => current + (item.Key.ToString() + " "));
			lblInfo.Text += "<br />Found: " + itemList + "<br />";
		}
		protected void cmdRemove_Click(object sender, System.EventArgs e)
		{
			lblInfo.Text += "<br />Removing itemA.<br />";
			Cache.Remove("itemA");
		}
		private void ItemRemovedCallback(string key, object value,
		CacheItemRemovedReason reason)
		{
			// Вызывается по завершении запроса, когда
			// элемент удаляется.
			// Если любой из элементов удален, убедиться,
			// что второй также удален.
			if (key == "itemA" || key == "itemB")
			{
				Cache.Remove("itemA");
				Cache.Remove("itemB");
			}
		}
	}
}